package com.ydd.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.pagehelper.Page;
import com.ydd.dto.ArticleDTO;
import com.ydd.dto.ArticlePageDTO;
import com.ydd.entity.YddArticle;
import com.ydd.vo.ArticleVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.time.LocalDate;
import java.util.List;
import com.ydd.dto.ArticlePageDTO;
import com.ydd.entity.SysConfig;
import io.swagger.models.auth.In;
import org.apache.ibatis.annotations.Update;


/**
 * @Description TODO
 * @Author fang
 * @Date 2023-05-29 16:09
 */
@Mapper
public interface YddArticleMapper extends BaseMapper<YddArticle> {
    /**
     * AdminIndexService-baseInfo
     * @return
     */
    @Select("select count(*) from ydd_article")
    Integer getArticleNum();

    /**
     * AdminIndexService-baseInfo
     * 查询分类下的菜单数量
     * @param cateId
     * @return
     */
    @Select("select count(*) from ydd_article where cateid = #{cateId}")
    Integer countByCateId(Long cateId);

    /**
     * AdminIndexService-baseInfo
     * 获取热门文章数据
     * @return
     */
    @Select("select * from ydd_article order by create_date desc limit 7")

    List<YddArticle> getHotArticle();

    /**
     * 分页查询
     * @param articlePageDTO
     * @return
     */
    Page<ArticleVO> list(ArticlePageDTO articlePageDTO);

    /**
     * 查询满足条件的条数
     * @param articlePageDTO
     * @return
     */
    Integer getCount(ArticlePageDTO articlePageDTO);





    /**
     * 修改文章
     * @param yddArticle
     */
    void update(YddArticle yddArticle);

    /**
     * 通过分类id查询分类下的文章数量
     * @param cateid
     * @return
     */
    Integer findBycateid(String cateid);



    /**
     * 通过id删除文章
     * @param id
     */
    void del(String id);

    /**
     * 新增文章
     * @param yddArticle
     * @param
     * @param
     */
    void add(@Param("yddArticle") YddArticle yddArticle);

    /**
     * 通过id查询文章详细
     * @param id
     * @return
     */
    ArticleVO find(Long id);

    /**
     * UserIndexService-list
     * 用户端-基础数据
     * @param cateid
     * @return
     */
    Page<ArticleVO> getByCateId(String cateid);

    /**
     * UserIndexService-recommendOrHot
     * 用户端-基础数据
     * @param condition
     * @return
     */
    List<ArticleVO> recommendOrHot(String condition);

    /**
     * UserIndexService-newArticle
     * 用户端-基础数据
     * @param beginWeekTime
     * @param endWeekTime
     * @return
     */
    Integer getNumDayByTime(@Param("beginWeekTime") Long beginWeekTime, @Param("endWeekTime") Long endWeekTime);

    /**
     * UserIndexService-newArticle
     * 用户端-基础数据
     * 获取最新文章
     * @return
     */
    Page<ArticleVO> getNewArticle();

    /**
     * UserIndexService-show
     * 文章详情-获取同一分类下，相关的文章推荐数据
     * @param id
     * @return
     */
    List<ArticleVO> getRecommendByCate(Long id);

    /**
     * UserIndexService-show
     * @param id
     * @return
     */
    ArticleVO selectVOById(Long id);

    /**
     * 根据用户id查询文章
     * @param yddUserId
     * @return
     */
    List<YddArticle> findArticleByUserId(Long yddUserId);

    /**
     * 根据文章id查询文章
     * @param articleIds
     * @return
     */
    List<YddArticle> findArticleByArticleIds(List<Integer> articleIds);

    /**
     * 根据用户id获取文章数
     * @param yddUserId
     * @return
     */
    Integer getArticleNumByUserId(Long yddUserId);

    /**
     * UserIndexService-show
     * @return
     */
    List<Long> getAllId();

    /**
     * 添加文章
     * @param yddArticle
     */
    void insertArticle(YddArticle yddArticle);
}
